home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 4 / Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso / Development / Source / POVSRC / SOURCE / ImageCodec.h < prev    next >
Text File  |  1993-11-30  |  6KB  |  238 lines

  1. /************************************************************
  2.  
  3. Created: Tuesday, June 8, 1993 at 3:10 PM
  4.  ImageCodec.h
  5.  C Interface to the Macintosh Libraries
  6.  
  7.  
  8.  Copyright Apple Computer, Inc. 1991, 1992
  9.  All rights reserved
  10.  
  11. ************************************************************/
  12.  
  13. #ifndef    __IMAGECODEC__
  14.  
  15. #define    __IMAGECODEC__
  16.  
  17. #ifndef __QUICKDRAW__
  18. #include <Quickdraw.h>
  19. #endif
  20.  
  21. #ifndef __QDOFFSCREEN__
  22. #include <QDOffscreen.h>
  23. #endif
  24.  
  25. #ifndef __TYPES__
  26. #include <Types.h>
  27. #endif
  28.  
  29. #ifndef __COMPONENTS__
  30. #include <Components.h>
  31. #endif
  32.  
  33. #ifndef    __IMAGECOMPRESSION__
  34. #include <ImageCompression.h>
  35. #endif
  36.  
  37.  
  38.  
  39.  
  40. /*    codec component selectors    */
  41.  
  42. #define    codecGetCodecInfo                    0x00
  43. #define    codecGetCompressionTime                0x01
  44. #define    codecGetMaxCompressionSize            0x02
  45. #define    codecPreCompress                    0x03
  46. #define    codecBandCompress                    0x04
  47. #define    codecPreDecompress                    0x05
  48. #define    codecBandDecompress                    0x06
  49. #define    codecCDSequenceBusy                    0x07
  50. #define    codecGetCompressedImageSize            0x08
  51. #define    codecGetSimilarity                    0x09
  52. #define    codecTrimImage                        0x0A
  53. #define    codecRequestSettings                0x0B
  54. #define    codecGetSettings                    0x0C
  55. #define    codecSetSettings                    0x0D
  56.  
  57. /*    codec selectors 0-127 are reserved by Apple */
  58. /*    codec selectors 128-191 are subtype specific */
  59. /*    codec selectors 192-255 are vendor specific */
  60. /*    codec selectors 256-32767 are available for general use */
  61. /*    negative selectors are reserved by the Component Manager */
  62.  
  63.  
  64.  
  65. /*    codec capabilities flags    */
  66.  
  67. #define    codecCanScale                        (1L<<0)
  68. #define    codecCanMask                        (1L<<1)
  69. #define    codecCanMatte                        (1L<<2)
  70. #define    codecCanTransform                    (1L<<3)
  71. #define    codecCanTransferMode                (1L<<4)
  72. #define    codecCanCopyPrev                    (1L<<5)
  73. #define    codecCanSpool                        (1L<<6)
  74. #define    codecCanClipVertical                (1L<<7)
  75. #define    codecCanClipRectangular                (1L<<8)
  76. #define    codecCanRemapColor                    (1L<<9)
  77. #define    codecCanFastDither                    (1L<<10)
  78. #define    codecCanSrcExtract                    (1L<<11)
  79. #define    codecCanCopyPrevComp                (1L<<12)
  80. #define    codecCanAsync                        (1L<<13)
  81. #define    codecCanMakeMask                    (1L<<14)
  82. #define codecCanShift                        (1L<<15)
  83.  
  84.  
  85. typedef    struct {
  86.     long    flags;
  87.     short    wantedPixelSize;
  88.     short    extendWidth;
  89.     short    extendHeight;
  90.     short    bandMin;
  91.     short    bandInc;
  92.     short    pad;
  93.     unsigned long    time;
  94. } CodecCapabilities;
  95.  
  96.  
  97.  
  98. /*    codec condition flags    */
  99.  
  100. #define    codecConditionFirstBand                (1L<<0)    
  101. #define    codecConditionLastBand                (1L<<1)    
  102. #define    codecConditionFirstFrame            (1L<<2)
  103. #define    codecConditionNewDepth                (1L<<3)
  104. #define    codecConditionNewTransform            (1L<<4)
  105. #define    codecConditionNewSrcRect            (1L<<5)
  106. #define    codecConditionNewMask                (1L<<6)
  107. #define    codecConditionNewMatte                (1L<<7)
  108. #define    codecConditionNewTransferMode        (1L<<8)
  109. #define    codecConditionNewClut                (1L<<9)
  110. #define    codecConditionNewAccuracy            (1L<<10)
  111. #define    codecConditionNewDestination        (1L<<11)
  112. #define    codecConditionFirstScreen            (1L<<12)
  113. #define    codecConditionCodecChangedMask        (1L<<31)    
  114.  
  115.  
  116. #define    codecInfoResourceType        'cdci'            /* codec info resource type */
  117.  
  118. #define    codecInterfaceVersion        1                /* high word returned in component GetVersion */
  119.  
  120.  
  121. typedef    struct {    
  122.     ImageSequence             sequenceID;                /* precompress,bandcompress */
  123.     ImageDescriptionHandle     imageDescription;        /* precompress,bandcompress */
  124.     Ptr                     data;
  125.     long                     bufferSize;
  126.     long                     frameNumber;
  127.     long                     startLine;
  128.     long                     stopLine;
  129.     long                    conditionFlags;
  130.     CodecFlags                 callerFlags;
  131.     CodecCapabilities        *capabilities;            /* precompress,bandcompress */
  132.     ProgressProcRecord        progressProcRecord;
  133.     CompletionProcRecord    completionProcRecord;    
  134.     FlushProcRecord         flushProcRecord;
  135.  
  136.     PixMap                     srcPixMap;                /* precompress,bandcompress */
  137.     PixMap                     prevPixMap;
  138.     CodecQ                     spatialQuality;
  139.     CodecQ                     temporalQuality;
  140.     Fixed                     similarity;
  141.     DataRateParamsPtr        dataRateParams;
  142.     long                    reserved;
  143. } CodecCompressParams;
  144.  
  145. typedef    struct {    
  146.     ImageSequence             sequenceID;                /* predecompress,banddecompress */
  147.     ImageDescriptionHandle     imageDescription;        /* predecompress,banddecompress */
  148.     Ptr                     data;
  149.     long                     bufferSize;
  150.     long                     frameNumber;
  151.     long                     startLine;
  152.     long                     stopLine;
  153.     long                    conditionFlags;
  154.     CodecFlags                 callerFlags;
  155.     CodecCapabilities         *capabilities;            /* predecompress,banddecompress */
  156.     ProgressProcRecord        progressProcRecord;
  157.     CompletionProcRecord    completionProcRecord;
  158.     DataProcRecord            dataProcRecord;
  159.  
  160.     CGrafPtr                 port;                    /* predecompress,banddecompress */
  161.     PixMap                     dstPixMap;                /* predecompress,banddecompress */
  162.     BitMapPtr                 maskBits;
  163.     PixMapPtr                 mattePixMap;
  164.     Rect                     srcRect;                /* predecompress,banddecompress */
  165.     MatrixRecord             *matrix;                /* predecompress,banddecompress */
  166.     CodecQ                     accuracy;                /* predecompress,banddecompress */
  167.     short                     transferMode;            /* predecompress,banddecompress */
  168.     long                    reserved[2];
  169. } CodecDecompressParams;
  170.  
  171.  
  172.  
  173. #define    PREAMBLE    Handle    storage
  174.  
  175. pascal ComponentResult
  176. CDGetCodecInfo(PREAMBLE,CodecInfo *info)
  177. ;
  178.  
  179. pascal ComponentResult
  180. CDGetCompressionTime(PREAMBLE,PixMapHandle src,const Rect *srcRect, short depth,CodecQ *spatialQuality,
  181.     CodecQ *temporalQuality,unsigned long *time)
  182. ;
  183.  
  184. pascal ComponentResult
  185. CDGetMaxCompressionSize(PREAMBLE,PixMapHandle src,const Rect *srcRect, short depth,CodecQ quality,long *size)
  186. ;
  187.  
  188.  
  189. pascal ComponentResult
  190. CDPreCompress(PREAMBLE,CodecCompressParams *params)
  191. ;
  192.  
  193. pascal ComponentResult
  194. CDBandCompress(PREAMBLE,CodecCompressParams *params)
  195. ;
  196.  
  197. pascal ComponentResult
  198. CDPreDecompress(PREAMBLE,CodecDecompressParams *params)
  199. ;
  200.  
  201. pascal ComponentResult
  202. CDBandDecompress(PREAMBLE,CodecDecompressParams *params)
  203. ;
  204.  
  205. pascal ComponentResult
  206. CDCodecBusy(PREAMBLE,ImageSequence seq)
  207. ;
  208.  
  209.  
  210. pascal ComponentResult
  211. CDGetCompressedImageSize(PREAMBLE,ImageDescriptionHandle desc,Ptr data,long bufferSize, 
  212.     DataProcRecordPtr dataProc,long *dataSize)
  213. ;
  214.  
  215. pascal ComponentResult
  216. CDGetSimilarity(PREAMBLE,PixMapHandle src,const Rect *srcRect,ImageDescriptionHandle desc,Ptr data,Fixed *similarity)
  217. ;
  218.  
  219. pascal ComponentResult
  220. CDTrimImage(PREAMBLE,ImageDescriptionHandle Desc,Ptr inData,long inBufferSize, DataProcRecordPtr dataProc,
  221.     Ptr outData,long outBufferSize,FlushProcRecordPtr flushProc,Rect *trimRect,ProgressProcRecordPtr progressProc)
  222. ;
  223.  
  224. pascal ComponentResult
  225. CDRequestSettings(PREAMBLE,Handle settings,Rect *rp,ModalFilterProcPtr filterProc)
  226. ;
  227.  
  228. pascal ComponentResult
  229. CDGetSettings(PREAMBLE,Handle settings)
  230. ;
  231.  
  232. pascal ComponentResult
  233. CDSetSettings(PREAMBLE,Handle settings)
  234. ;
  235.  
  236.  
  237. #endif    __IMAGECODEC__
  238.